home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / Fonts.p < prev    next >
Encoding:
Text File  |  1998-02-12  |  11.2 KB  |  388 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Fonts.p
  3.  
  4.      Contains:    Font Manager Interfaces.
  5.  
  6.      Version:    Technology:    MacOS 8
  7.                  Release:    Universal Interfaces 3.1
  8.  
  9.      Copyright:    © 1985-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT Fonts;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __FONTS__}
  28. {$SETC __FONTS__ := 1}
  29.  
  30. {$I+}
  31. {$SETC FontsIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __MACTYPES__}
  35. {$I MacTypes.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __QUICKDRAW__}
  38. {$I Quickdraw.p}
  39. {$ENDC}
  40.  
  41.  
  42. {$PUSH}
  43. {$ALIGN MAC68K}
  44. {$LibExport+}
  45.  
  46.  
  47. CONST
  48.     systemFont                    = 0;
  49.     applFont                    = 1;
  50.  
  51. {  kPlatformDefaultGuiFontID is used in QuickTime 3.0  }
  52. {$IFC TARGET_OS_MAC }
  53.     kPlatformDefaultGuiFontID    = 1;
  54.  
  55. {$ELSEC}
  56.     kPlatformDefaultGuiFontID    = -1;
  57.  
  58. {$ENDC}  {TARGET_OS_MAC}
  59.  
  60. {
  61.     The following font constants are deprecated.  
  62.     Please use GetFNum() to look up the font ID by name.
  63. }
  64.     kFontIDNewYork                = 2;
  65.     kFontIDGeneva                = 3;
  66.     kFontIDMonaco                = 4;
  67.     kFontIDVenice                = 5;
  68.     kFontIDLondon                = 6;
  69.     kFontIDAthens                = 7;
  70.     kFontIDSanFrancisco            = 8;
  71.     kFontIDToronto                = 9;
  72.     kFontIDCairo                = 11;
  73.     kFontIDLosAngeles            = 12;
  74.     kFontIDTimes                = 20;
  75.     kFontIDHelvetica            = 21;
  76.     kFontIDCourier                = 22;
  77.     kFontIDSymbol                = 23;
  78.     kFontIDMobile                = 24;
  79.  
  80. {$IFC OLDROUTINENAMES }
  81.     newYork                        = 2;
  82.     geneva                        = 3;
  83.     monaco                        = 4;
  84.     venice                        = 5;
  85.     london                        = 6;
  86.     athens                        = 7;
  87.     sanFran                        = 8;
  88.     toronto                        = 9;
  89.     cairo                        = 11;
  90.     losAngeles                    = 12;
  91.     times                        = 20;
  92.     helvetica                    = 21;
  93.     courier                        = 22;
  94.     symbol                        = 23;
  95.     mobile                        = 24;
  96.  
  97. {$ENDC}  {OLDROUTINENAMES}
  98.  
  99.     commandMark                    = 17;
  100.     checkMark                    = 18;
  101.     diamondMark                    = 19;
  102.     appleMark                    = 20;
  103.  
  104.     propFont                    = 36864;
  105.     prpFntH                        = 36865;
  106.     prpFntW                        = 36866;
  107.     prpFntHW                    = 36867;
  108.     fixedFont                    = 45056;
  109.     fxdFntH                        = 45057;
  110.     fxdFntW                        = 45058;
  111.     fxdFntHW                    = 45059;
  112.     fontWid                        = 44208;
  113.  
  114.  
  115. TYPE
  116.     FMInputPtr = ^FMInput;
  117.     FMInput = PACKED RECORD
  118.         family:                    INTEGER;
  119.         size:                    INTEGER;
  120.         face:                    Style;
  121.         needBits:                BOOLEAN;
  122.         device:                    INTEGER;
  123.         numer:                    Point;
  124.         denom:                    Point;
  125.     END;
  126.  
  127.     FMOutputPtr = ^FMOutput;
  128.     FMOutput = PACKED RECORD
  129.         errNum:                    INTEGER;
  130.         fontHandle:                Handle;                                    {  the previous "privateFontResult" was a mistake!  }
  131.         boldPixels:                UInt8;
  132.         italicPixels:            UInt8;
  133.         ulOffset:                UInt8;
  134.         ulShadow:                UInt8;
  135.         ulThick:                UInt8;
  136.         shadowPixels:            UInt8;
  137.         extra:                    SInt8;
  138.         ascent:                    UInt8;
  139.         descent:                UInt8;
  140.         widMax:                    UInt8;
  141.         leading:                SInt8;
  142.         curStyle:                SInt8;
  143.         numer:                    Point;
  144.         denom:                    Point;
  145.     END;
  146.  
  147.     FMOutPtr                            = ^FMOutput;
  148.     FontRecPtr = ^FontRec;
  149.     FontRec = RECORD
  150.         fontType:                INTEGER;                                { font type }
  151.         firstChar:                INTEGER;                                { ASCII code of first character }
  152.         lastChar:                INTEGER;                                { ASCII code of last character }
  153.         widMax:                    INTEGER;                                { maximum character width }
  154.         kernMax:                INTEGER;                                { negative of maximum character kern }
  155.         nDescent:                INTEGER;                                { negative of descent }
  156.         fRectWidth:                INTEGER;                                { width of font rectangle }
  157.         fRectHeight:            INTEGER;                                { height of font rectangle }
  158.         owTLoc:                    UInt16;                                    { offset to offset/width table }
  159.         ascent:                    INTEGER;                                { ascent }
  160.         descent:                INTEGER;                                { descent }
  161.         leading:                INTEGER;                                { leading }
  162.         rowWords:                INTEGER;                                { row width of bit image / 2  }
  163.     END;
  164.  
  165.     FontRecHdl                            = ^FontRecPtr;
  166.     FMetricRecPtr = ^FMetricRec;
  167.     FMetricRec = RECORD
  168.         ascent:                    Fixed;                                    { base line to top }
  169.         descent:                Fixed;                                    { base line to bottom }
  170.         leading:                Fixed;                                    { leading between lines }
  171.         widMax:                    Fixed;                                    { maximum character width }
  172.         wTabHandle:                Handle;                                    { handle to font width table }
  173.     END;
  174.  
  175. {
  176.    typedef struct FMetricRec FMetricRec, *FMetricRecPtr;
  177.    typedef FMetricRecPtr *FMetricRecHandle;
  178. }
  179.     FMetricRecHandle                    = ^FMetricRecPtr;
  180.     WidEntryPtr = ^WidEntry;
  181.     WidEntry = RECORD
  182.         widStyle:                INTEGER;                                { style entry applies to }
  183.     END;
  184.  
  185.     WidTablePtr = ^WidTable;
  186.     WidTable = RECORD
  187.         numWidths:                INTEGER;                                { number of entries - 1 }
  188.     END;
  189.  
  190.     AsscEntryPtr = ^AsscEntry;
  191.     AsscEntry = RECORD
  192.         fontSize:                INTEGER;
  193.         fontStyle:                INTEGER;
  194.         fontID:                    INTEGER;                                { font resource ID }
  195.     END;
  196.  
  197.     FontAssocPtr = ^FontAssoc;
  198.     FontAssoc = RECORD
  199.         numAssoc:                INTEGER;                                { number of entries - 1 }
  200.     END;
  201.  
  202.     StyleTablePtr = ^StyleTable;
  203.     StyleTable = RECORD
  204.         fontClass:                INTEGER;
  205.         offset:                    LONGINT;
  206.         reserved:                LONGINT;
  207.         indexes:                PACKED ARRAY [0..47] OF CHAR;
  208.     END;
  209.  
  210.     NameTablePtr = ^NameTable;
  211.     NameTable = RECORD
  212.         stringCount:            INTEGER;
  213.         baseFontName:            Str255;
  214.     END;
  215.  
  216.     KernPairPtr = ^KernPair;
  217.     KernPair = RECORD
  218.         kernFirst:                SInt8;                                    { 1st character of kerned pair }
  219.         kernSecond:                SInt8;                                    { 2nd character of kerned pair }
  220.         kernWidth:                INTEGER;                                { kerning in 1pt fixed format }
  221.     END;
  222.  
  223.     KernEntryPtr = ^KernEntry;
  224.     KernEntry = RECORD
  225.         kernStyle:                INTEGER;                                { style the entry applies to }
  226.         kernLength:                INTEGER;                                { length of this entry }
  227.     END;
  228.  
  229.     KernTablePtr = ^KernTable;
  230.     KernTable = RECORD
  231.         numKerns:                INTEGER;                                { number of kerning entries }
  232.     END;
  233.  
  234.     WidthTablePtr = ^WidthTable;
  235.     WidthTable = PACKED RECORD
  236.         tabData:                ARRAY [0..255] OF Fixed;                { character widths }
  237.         tabFont:                Handle;                                    { font record used to build table - the previous FontResult was a mistake! }
  238.         sExtra:                    LONGINT;                                { space extra used for table }
  239.         style:                    LONGINT;                                { extra due to style }
  240.         fID:                    INTEGER;                                { font family ID }
  241.         fSize:                    INTEGER;                                { font size request }
  242.         face:                    INTEGER;                                { style (face) request }
  243.         device:                    INTEGER;                                { device requested }
  244.         inNumer:                Point;                                    { scale factors requested }
  245.         inDenom:                Point;                                    { scale factors requested }
  246.         aFID:                    INTEGER;                                { actual font family ID for table }
  247.         fHand:                    Handle;                                    { family record used to build up table }
  248.         usedFam:                BOOLEAN;                                { used fixed point family widths }
  249.         aFace:                    UInt8;                                    { actual face produced }
  250.         vOutput:                INTEGER;                                { vertical scale output value }
  251.         hOutput:                INTEGER;                                { horizontal scale output value }
  252.         vFactor:                INTEGER;                                { vertical scale output value }
  253.         hFactor:                INTEGER;                                { horizontal scale output value }
  254.         aSize:                    INTEGER;                                { actual size of actual font used }
  255.         tabSize:                INTEGER;                                { total size of table }
  256.     END;
  257.  
  258.     WidthTableHdl                        = ^WidthTablePtr;
  259.  
  260.     FamRecPtr = ^FamRec;
  261.     FamRec = RECORD
  262.         ffFlags:                INTEGER;                                { flags for family }
  263.         ffFamID:                INTEGER;                                { family ID number }
  264.         ffFirstChar:            INTEGER;                                { ASCII code of 1st character }
  265.         ffLastChar:                INTEGER;                                { ASCII code of last character }
  266.         ffAscent:                INTEGER;                                { maximum ascent for 1pt font }
  267.         ffDescent:                INTEGER;                                { maximum descent for 1pt font }
  268.         ffLeading:                INTEGER;                                { maximum leading for 1pt font }
  269.         ffWidMax:                INTEGER;                                { maximum widMax for 1pt font }
  270.         ffWTabOff:                LONGINT;                                { offset to width table }
  271.         ffKernOff:                LONGINT;                                { offset to kerning table }
  272.         ffStylOff:                LONGINT;                                { offset to style mapping table }
  273.         ffProperty:                ARRAY [0..8] OF INTEGER;                { style property info }
  274.         ffIntl:                    ARRAY [0..1] OF INTEGER;                { for international use }
  275.         ffVersion:                INTEGER;                                { version number }
  276.     END;
  277.  
  278.     FontPointSize                        = SInt16;
  279.     FontFamilyID                        = SInt16;
  280. PROCEDURE InitFonts;
  281.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  282.     INLINE $A8FE;
  283.     {$ENDC}
  284. PROCEDURE GetFontName(familyID: INTEGER; VAR name: Str255);
  285.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  286.     INLINE $A8FF;
  287.     {$ENDC}
  288. PROCEDURE GetFNum(name: Str255; VAR familyID: INTEGER);
  289.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  290.     INLINE $A900;
  291.     {$ENDC}
  292. FUNCTION RealFont(fontNum: INTEGER; size: INTEGER): BOOLEAN;
  293.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  294.     INLINE $A902;
  295.     {$ENDC}
  296. PROCEDURE SetFontLock(lockFlag: BOOLEAN);
  297.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  298.     INLINE $A903;
  299.     {$ENDC}
  300. FUNCTION FMSwapFont({CONST}VAR inRec: FMInput): FMOutPtr;
  301.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  302.     INLINE $A901;
  303.     {$ENDC}
  304. PROCEDURE SetFScaleDisable(fscaleDisable: BOOLEAN);
  305.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  306.     INLINE $A834;
  307.     {$ENDC}
  308. PROCEDURE FontMetrics(theMetrics: FMetricRecPtr);
  309.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  310.     INLINE $A835;
  311.     {$ENDC}
  312. PROCEDURE SetFractEnable(fractEnable: BOOLEAN);
  313.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  314.     INLINE $A814;
  315.     {$ENDC}
  316. FUNCTION GetDefFontSize: INTEGER;
  317.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  318.     INLINE $3EB8, $0BA8, $6604, $3EBC, $000C;
  319.     {$ENDC}
  320. FUNCTION IsOutline(numer: Point; denom: Point): BOOLEAN;
  321.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  322.     INLINE $7000, $A854;
  323.     {$ENDC}
  324. PROCEDURE SetOutlinePreferred(outlinePreferred: BOOLEAN);
  325.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  326.     INLINE $7001, $A854;
  327.     {$ENDC}
  328. FUNCTION GetOutlinePreferred: BOOLEAN;
  329.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  330.     INLINE $7009, $A854;
  331.     {$ENDC}
  332. FUNCTION OutlineMetrics(byteCount: INTEGER; textPtr: UNIV Ptr; numer: Point; denom: Point; VAR yMax: INTEGER; VAR yMin: INTEGER; awArray: FixedPtr; lsbArray: FixedPtr; boundsArray: RectPtr): OSErr;
  333.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  334.     INLINE $7008, $A854;
  335.     {$ENDC}
  336. PROCEDURE SetPreserveGlyph(preserveGlyph: BOOLEAN);
  337.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  338.     INLINE $700A, $A854;
  339.     {$ENDC}
  340. FUNCTION GetPreserveGlyph: BOOLEAN;
  341.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  342.     INLINE $700B, $A854;
  343.     {$ENDC}
  344. FUNCTION FlushFonts: OSErr;
  345.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  346.     INLINE $700C, $A854;
  347.     {$ENDC}
  348. FUNCTION GetSysFont: INTEGER;
  349.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  350.     INLINE $3EB8, $0BA6;
  351.     {$ENDC}
  352. FUNCTION GetAppFont: INTEGER;
  353.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  354.     INLINE $3EB8, $0984;
  355.     {$ENDC}
  356.  
  357. PROCEDURE AntiTextSetApplicationAware(aware: BOOLEAN);
  358.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  359.     INLINE $7024, $A854;
  360.     {$ENDC}
  361. FUNCTION AntiTextGetApplicationAware: BOOLEAN;
  362.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  363.     INLINE $7025, $A854;
  364.     {$ENDC}
  365. PROCEDURE AntiTextSetEnabled(enabled: BOOLEAN);
  366.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  367.     INLINE $7026, $A854;
  368.     {$ENDC}
  369. FUNCTION AntiTextGetEnabled: BOOLEAN;
  370.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  371.     INLINE $7027, $A854;
  372.     {$ENDC}
  373. FUNCTION AntiTextIsAntiAliased(numer: Point; denom: Point): BOOLEAN;
  374.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  375.     INLINE $7028, $A854;
  376.     {$ENDC}
  377.  
  378. {$ALIGN RESET}
  379. {$POP}
  380.  
  381. {$SETC UsingIncludes := FontsIncludes}
  382.  
  383. {$ENDC} {__FONTS__}
  384.  
  385. {$IFC NOT UsingIncludes}
  386.  END.
  387. {$ENDC}
  388.